{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import datasets\n",
    "\n",
    "X,y=datasets.make_moons(n_samples=500,noise=0.3,random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[y==0,0],X[y==0,1])\n",
    "plt.scatter(X[y==1,0],X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "x_train,x_test,y_train,y_test=train_test_split(X,y,test_size=0.3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "hard voting:少数服从多数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.ensemble import VotingClassifier\n",
    "voting_clf=VotingClassifier(estimators=[     #传入的是一个列表\n",
    "    ('log_clf',LogisticRegression()),\n",
    "    (\"svm_clf\",SVC()),\n",
    "    (\"dt_clf\",DecisionTreeClassifier())\n",
    "],voting=\"hard\")#传入的voting模式，hard就是少数服从多数hard voting\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-5 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-5 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-5 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-5 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-5 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-5 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-5 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-5 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-5 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-5 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-5\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>VotingClassifier(estimators=[(&#x27;log_clf&#x27;, LogisticRegression()),\n",
       "                             (&#x27;svm_clf&#x27;, SVC()),\n",
       "                             (&#x27;dt_clf&#x27;, DecisionTreeClassifier())])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-17\" type=\"checkbox\" ><label for=\"sk-estimator-id-17\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;VotingClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.ensemble.VotingClassifier.html\">?<span>Documentation for VotingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>VotingClassifier(estimators=[(&#x27;log_clf&#x27;, LogisticRegression()),\n",
       "                             (&#x27;svm_clf&#x27;, SVC()),\n",
       "                             (&#x27;dt_clf&#x27;, DecisionTreeClassifier())])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>log_clf</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-18\" type=\"checkbox\" ><label for=\"sk-estimator-id-18\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression()</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>svm_clf</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-19\" type=\"checkbox\" ><label for=\"sk-estimator-id-19\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SVC()</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>dt_clf</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-20\" type=\"checkbox\" ><label for=\"sk-estimator-id-20\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier()</pre></div> </div></div></div></div></div></div></div></div></div>"
      ],
      "text/plain": [
       "VotingClassifier(estimators=[('log_clf', LogisticRegression()),\n",
       "                             ('svm_clf', SVC()),\n",
       "                             ('dt_clf', DecisionTreeClassifier())])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "voting_clf.fit(x_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9133333333333333"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "voting_clf.score(x_test,y_test)#集成分数\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用soft voting：考虑概率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "voting_clf_soft=VotingClassifier(estimators=[     #传入的是一个列表\n",
    "    ('log_clf',LogisticRegression()),\n",
    "    (\"svm_clf\",SVC(probability=True)),\n",
    "    (\"dt_clf\",DecisionTreeClassifier())\n",
    "],voting=\"soft\")#使用softvoting\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-6 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-6 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-6 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-6 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-6 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-6 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-6 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-6 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-6 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-6 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-6 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-6 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-6 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-6 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-6 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-6 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-6\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>VotingClassifier(estimators=[(&#x27;log_clf&#x27;, LogisticRegression()),\n",
       "                             (&#x27;svm_clf&#x27;, SVC(probability=True)),\n",
       "                             (&#x27;dt_clf&#x27;, DecisionTreeClassifier())],\n",
       "                 voting=&#x27;soft&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-21\" type=\"checkbox\" ><label for=\"sk-estimator-id-21\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;VotingClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.ensemble.VotingClassifier.html\">?<span>Documentation for VotingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>VotingClassifier(estimators=[(&#x27;log_clf&#x27;, LogisticRegression()),\n",
       "                             (&#x27;svm_clf&#x27;, SVC(probability=True)),\n",
       "                             (&#x27;dt_clf&#x27;, DecisionTreeClassifier())],\n",
       "                 voting=&#x27;soft&#x27;)</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>log_clf</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-22\" type=\"checkbox\" ><label for=\"sk-estimator-id-22\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression()</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>svm_clf</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-23\" type=\"checkbox\" ><label for=\"sk-estimator-id-23\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(probability=True)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>dt_clf</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-24\" type=\"checkbox\" ><label for=\"sk-estimator-id-24\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier()</pre></div> </div></div></div></div></div></div></div></div></div>"
      ],
      "text/plain": [
       "VotingClassifier(estimators=[('log_clf', LogisticRegression()),\n",
       "                             ('svm_clf', SVC(probability=True)),\n",
       "                             ('dt_clf', DecisionTreeClassifier())],\n",
       "                 voting='soft')"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "voting_clf_soft.fit(x_train,y_train)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.92"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "voting_clf_soft.score(x_test,y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'estimators': [list],\n",
       " 'weights': ['array-like', None],\n",
       " 'n_jobs': [None, numbers.Integral],\n",
       " 'verbose': ['verbose'],\n",
       " 'voting': [<sklearn.utils._param_validation.StrOptions at 0x1a27ff09460>],\n",
       " 'flatten_transform': ['boolean']}"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "voting_clf_soft._parameter_constraints"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
